home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Deutsche Edition 1
/
Deutsche Edition 1.iso
/
amok
/
051-060
/
amok52
/
abitur
/
txt
/
bammel.mod
< prev
next >
Wrap
Text File
|
1993-11-04
|
3KB
|
131 lines
IMPLEMENTATION MODULE Bammel;
FROM AbiturScreen IMPORT AddAbiTxtLin, ShowAbiTxt, blaU;
FROM RandomNumber IMPORT RND;
FROM Intuition IMPORT WindowPtr;
FROM Exec IMPORT AllocMem, FreeMem, MemReqSet, MemReqs;
FROM Arts IMPORT TermProcedure, Assert;
FROM SYSTEM IMPORT ADR;
FROM Graphics IMPORT Move, Text, SetAPen;
FROM Str IMPORT Copy, Length;
FROM Dos IMPORT Open, Close, oldFile, FileHandlePtr;
FROM LineReader IMPORT ReadALine;
CONST MaxSLen = 32;
MaxZeil = 25;
TYPE BammelString = ARRAY[0..MaxSLen] OF CHAR;
BammelElePtr = POINTER TO BammelEle;
BammelEle = RECORD
Next: BammelElePtr;
Count: INTEGER;
Txt: ARRAY[1..MaxZeil] OF BammelString
END;
VAR GBammel, B: BammelElePtr;
BFHP: FileHandlePtr;
PROCEDURE ShowRNDBammelText;
VAR Count: INTEGER;
ToShow: BammelElePtr;
i:INTEGER;
W: WindowPtr;
BEGIN
Count := RND(500);
ToShow := GBammel;
IF Count > 0 THEN
FOR i := 1 TO Count DO
IF ToShow^.Next = NIL THEN
ToShow := GBammel
ELSE
ToShow := ToShow^.Next
END
END
END; (* Hier: ToShow gefunden *)
FOR i := 1 TO ToShow^.Count DO
AddAbiTxtLin(ToShow^.Txt[i])
END;
ShowAbiTxt(blaU)
END ShowRNDBammelText;
PROCEDURE FreeBammel;
VAR Tmp : BammelElePtr;
BEGIN
WHILE GBammel # NIL DO
Tmp := GBammel;
GBammel := GBammel^.Next;
FreeMem(Tmp, SIZE(BammelEle))
END
END FreeBammel;
PROCEDURE GetABammel(VAR B: BammelElePtr): BOOLEAN;
VAR EOFile: BOOLEAN;
Str: ARRAY [0..MaxSLen] OF CHAR;
TmpB: BammelElePtr;
i: INTEGER;
AktLine: INTEGER;
BEGIN
ReadALine(BFHP, Str, EOFile);
IF EOFile THEN
B := NIL;
RETURN FALSE
ELSE
TmpB := AllocMem(SIZE(BammelEle), MemReqSet{public});
Assert(TmpB#NIL, ADR("Kein Bammel Speicher"));
FOR i := 1 TO MaxZeil DO
TmpB^.Txt[i][0] := 0C
END;
IF Length(Str) > 0 THEN
Str[0] := " "
END;
Copy(TmpB^.Txt[1], Str);
AktLine := 2;
END;
REPEAT
ReadALine(BFHP, Str, EOFile);
IF NOT EOFile THEN
IF Str[0] # "@" THEN
IF Length(Str) > 0 THEN
Str[0] := " "
END;
Copy(TmpB^.Txt[AktLine], Str);
IF AktLine < MaxZeil THEN INC(AktLine) END
END
END
UNTIL EOFile OR (Str[0] = "@");
TmpB^.Count := AktLine - 1;
B := TmpB;
RETURN TRUE
END GetABammel;
BEGIN
GBammel := NIL;
TermProcedure(FreeBammel);
BFHP := Open(ADR("Text/Bammel"), oldFile);
IF BFHP # NIL THEN
WHILE GetABammel(B) DO
B^.Next := GBammel;
GBammel := B
END
END;
Close(BFHP)
END Bammel.mod